// 封装网络请求

// 导入vuex，读取token
// import store from '../';

const interceptor = {
  invoke(args) {
    // request 触发前拼接 url 
    const { url } = args;
    // 不以http开头的地址，才拼接基地址
    // string.startsWith('abc')，判断字符串是否以'abc'开头
    if (!url.startsWith('http')) {
      args.url = 'https://192.168.88.65:3360' + args.url
    }

    // // 没有请求头，给它一个默认请求头
    // if (!args.header) {
    //   args.header = {};
    // }
    // // 加上token
    // const { token } = store.state.user;
    // if (token) {
    //   // 请求头携带token
    //   args.header.Authorization = token;
    // }
  },
  success() {
  },
  fail() {
  },
  complete() {
  }
};

// 配置拦截器
// uni-app拦截器
uni.addInterceptor('request', interceptor)

// 拦截文件上传
uni.addInterceptor('uploadFile', interceptor);

// 导出一个http方法，参数跟uni.request完全一样
export default async function http(config) {
  const [error, res] = await uni.request(config)
  // error如果不为空，接口调用失败了
  if (error) {
    // 抛出异常，程序就会中断
    throw error;
  }
  // 取出来http返回状态码
  const { statusCode } = res;
  // 如果状态码不是2xx，调用失败了
  if (!(statusCode >= 200 && statusCode < 300)) {
    // 抛出异常
    throw res;
  }
  // 正常情况，返回接口的数据
  return res.data.result;
}